package com.zhm.demo.redis.config;


import com.hthium.json.util.ValueWrapper;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

/**
 * Redis使用FastJson序列化
 */
public class ValueWrapperRedisSerializer implements RedisSerializer<ValueWrapper> {
    public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;

//    private final Class<T> clazz;
//
//    public HcRedisSerializer(Class<T> clazz) {
//        super();
//        this.clazz = clazz;
//    }

    @Override
    public byte[] serialize(ValueWrapper valueWrapper) throws SerializationException {
        if (valueWrapper == null) {
            return new byte[0];
        }
        return valueWrapper.getRawStr().getBytes(StandardCharsets.UTF_8);
    }

    @Override
    public ValueWrapper deserialize(byte[] bytes) throws SerializationException {
        if (bytes == null || bytes.length <= 0) {
            return null;
        }
        String str = new String(bytes, DEFAULT_CHARSET);

        return new ValueWrapper(str);
    }
}
